home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
programm
/
ds0257
/
lib.exe
/
FILES.LIB
< prev
next >
Wrap
Text File
|
1992-02-14
|
7KB
|
554 lines
#IF !LIB4A86
#ELSE
#IF !INTERN_LIB4A86_S
INTERN_LIB4A86_S EQU 01
JMP START
#ENDIF
#ENDIF
ARCHIV EQU 020H
SUBDIR EQU 010H
VOLUME EQU 008H
SYSTEM EQU 004H
HIDDEN EQU 002H
READONLY EQU 001H
DEFAULTATTR EQU ARCHIV OR READONLY
FINDATTRIBUTE DW DEFAULTATTR
FINDDTA STRUC [BX]
DB 21XD DUP ?
_DTAATTR DB ?
_DTATIME DW ?
_DTADATE DW ?
_DTALENGTH DW ?,?
_DTANAME DB 13XD DUP ?
ENDS
#IF !INTERN_DOSSTRTOSTR_S
INTERN_DOSSTRTOSTR_S EQU 01
DOSSTRTOSTR:
PUSH SI
CLD
XOR AH,AH
PUSH DI
INC DI
L0:
CMP [SI],AL
JE >L2
MOVSB
INC AH
JNZ L0
DEC AH
L2:
POP DI
MOV ES:[DI],AH
POP SI
RET
#ENDIF
K1 DW 0
A000 EQU W[BP-02H]
L000 EQU 02H
B000 EQU W[BP+02H]
C000 EQU W[BP+04H]
D000 EQU W[BP+06H]
S000 EQU [BP+08H]
T000 EQU [BP+0CH]
INTERN_FILESSCODE:
CLI
POP CS:K1
PUSH ES,DI,DS,SI
PUSH DX,CX,BX
PUSH BP
MOV BP,SP
PUSH AX
PUSH CS:K1
STI
CLD
RET
INTERN_FILESECODE1:
CALL INTERN_CLOSEFILE
INTERN_FILESECODE:
MOV SP,BP
POP BP
POP BX,CX,DX,SI,DS,DI,ES
RET
GETFILEPATH:
CALL INTERN_FILESSCODE
SUB SP,130XD
MOV DI,SP
MOV ES,SS
CALL INTERN_MAKEASCIIZ
PUSH SI
PUSH AX
MOV SI,DX
MOV AH,060H
INT 021H
POP DX
POP SI
MOV [SI],DH
MOV SI,DI
MOV DS,SS
LES DI,T000
MOV AL,0
MOV B ES:[DI],AL
JC >L8
CALL DOSSTRTOSTR
L8:
JMP INTERN_FILESECODE
PARSEFILENAME:
CALL INTERN_FILESSCODE
LODSB
XOR AH,AH
MOV CX,AX
MOV ES:[DI],AH
JCXZ >L9
MOV BX,SI
MOV DX,CX
L0:
CALL INTERN_GETNEXTFILENAMECHAR
JNE >L00
L01:
MOV BX,SI
MOV DX,CX
DEC DX
L00:
LOOP L0
L1:
MOV CX,DX
MOV SI,BX
MOV ES:[DI],CL
INC DI
JCXZ >L1
PUSH CX
REP MOVSB
POP CX
L1:
MOV SI,W S000
SUB B[SI],CL
L9:
JMP INTERN_FILESECODE
FINDFIRST:
MOV AH,04EH
JMP >L1
L0002 EQU [BP-2-L000]
L0003 EQU [BP-4-L000]
FINDNEXT:
MOV AH,04FH
L1:
MOV B ES:[DI],0
CALL INTERN_FILESSCODE
MOV CX,ES
MOV AH,2FH
INT 021H
PUSH ES
PUSH BX
MOV ES,CX
PUSH SI
MOV BX,DX
MOV AH,01AH
INT 021H
CALL INTERN_MAKEASCIIZ
PUSH AX
MOV CX,CS:FINDATTRIBUTE
MOV AX,A000
INT 021H
POP CX
MOV [SI],CH
POP SI
JC >L9
MOV CL, _DTAATTR
CALL INTERN_EXPANDNAME
L9:
PUSHF
PUSH AX
MOV AH,01AH
LDS DX,L0003
INT 021H
POP AX
POPF
JMP INTERN_FILESECODE
GETFILETIME:
MOV AL,INTERN_KONVERTTIME1O
JMP >L1
GETFILEDATE:
MOV AL,INTERN_KONVERTDATE1O
JMP >L1
SETFILETIME:
MOV AL,INTERN_KONVERTTIME2O
JMP >L1
SETFILEDATE:
MOV AL,INTERN_KONVERTDATE2O
L1:
XOR AH,AH
ADD AX,OFFSET INTERN_FILESBASIS
CALL INTERN_FILESSCODE
CALL INTERN_OPENFILE1
JC >L80
MOV AX,05700H
INT 021H
JC >L8
CALL WORD PTR A000
L8:
CALL INTERN_CLOSEFILE
L80:
JMP INTERN_FILESECODE
GETFILESIZE:
CALL INTERN_FILESSCODE
CALL INTERN_OPENFILE1
JC >L8
MOV AX,04202H
XOR CX,CX
XOR DX,DX
INT 021H
CALL INTERN_CLOSEFILE
JC >L8
MOV A000,AX
MOV D000,DX
L8:
JMP INTERN_FILESECODE
PUFFER_TABELLE STRUC [BX]
PUFFER_SEG DW ?
PUFFER_OFF DW ?
PUFFER_LEN DW ?
ENDS
L0001 EQU W[BP-(04H+L000)]
L0002 EQU W[BP-(06H+L000)]
L0003 EQU W[BP-(08H+L000)]
COPYFILE:
CALL INTERN_FILESSCODE
PUSH DS,BX
CALL INTERN_OPENFILE1
JC L8
PUSH BX
MOV DS,ES
MOV SI,DI
XOR CX,CX
CALL INTERN_CREATEFILE
JC >L81
PUSH BX
LDS BX,L0001
MOV CX,PUFFER_LEN
MOV DX,PUFFER_OFF
MOV DS,PUFFER_SEG
L0:
MOV BX,L0002
MOV AH,03FH
INT 021H
JC >L8
MOV CX,AX
JCXZ >L8
MOV BX,L0003
MOV AH,040H
INT 021H
JC >L8
OR AX,AX
STC
JNE L0
L8:
MOV BX,L0003
CALL INTERN_CLOSEFILE
L81:
MOV BX,L0002
JMP INTERN_FILESECODE1
RENAMEFILE:
JMP INTERN_RENAMEFILEDIR
GETSETATTRIBUTES:
MOV AH,043H
AND AL,01H
JMP >L1
DELETEFILE:
MOV AX,04100H
L1:
CALL INTERN_FILESSCODE
CALL INTERN_MAKEASCIIZ
PUSH AX
MOV AX,A000
INT 021H
POP DX
MOV [SI],DH
JC >L8
MOV AX,CX
L8:
JMP INTERN_FILESECODE
EXISTFILE:
CALL INTERN_FILESSCODE
SUB SP,42XD + 256XD + 256XD
MOV ES,SS
LEA DI,[BP - 42XD - 256XD]
PUSH DI
MOV CL,[SI]
XOR CH,CH
INC CL
CLD
REP MOVSB
POP SI
MOV DS,SS
LEA DI,[BP - 42XD - 256XD - 256XD]
LEA DX,[BP - 42XD]
CALL FINDFIRST
JMP INTERN_FILESECODE
FILETIMETODOSTIME:
MOV AL,CL
AND AL,01FH
SHL AL,1
MOV AH,CH
SHR AH,1
SHR AH,1
SHR AH,1
AND AH,1FH
SHR CX,1
SHR CX,1
SHR CX,1
SHR CX,1
SHR CX,1
AND CL,3FH
MOV CH,AH
MOV DH,AL
XOR DL,DL
RET
DOSTIMETOFILETIME:
CMP DH,59XD
JA >L8
CMP CH,23XD
JA >L8
CMP CL,59XD
JBE >L1
L8:
STC
RET
L1:
PUSH DX
XOR AX,AX
SHR DH,1
OR AL,DH
SHL CH,1
SHL CH,1
SHL CH,1
OR AH,CH
XOR CH,CH
SHL CX,1
SHL CX,1
SHL CX,1
SHL CX,1
SHL CX,1
OR CX,AX
CLC
POP DX
RET
FILEDATETODOSDATE:
MOV AL,DL
AND AL,01FH
XOR CH,CH
MOV CL,DH
SHR CL,1
ADD CX,1980XD
SHL DX,1
SHL DX,1
SHL DX,1
AND DH,0FH
MOV DL,AL
RET
DOSDATETOFILEDATE:
CMP DL,31XD
JA >L8
CMP DH,12XD
JA >L8
SUB CX,1980XD
JNC >L1
L8:
STC
RET
L1:
PUSH CX
XOR AX,AX
OR AL,DL
SHL CL,1
OR AH,CL
XOR DL,DL
SHR DX,1
SHR DX,1
SHR DX,1
OR DX,AX
POP CX
CLC
RET
INTERN_FILESBASIS LABEL BYTE
INTERN_KONVERTTIME1:
CALL FILETIMETODOSTIME
L00:
MOV D000,DX
MOV C000,CX
RET
INTERN_KONVERTDATE1:
CALL FILEDATETODOSDATE
JMP L00
INTERN_KONVERTTIME2:
PUSH DX
MOV DX,D000
MOV CX,C000
CALL DOSTIMETOFILETIME
POP DX
L00:
JC RET
MOV AX,05701H
INT 021H
RET
INTERN_KONVERTDATE2:
PUSH CX
MOV DX,D000
MOV CX,C000
CALL DOSDATETOFILEDATE
POP CX
JMP L00
INTERN_KONVERTDATE1O EQU (OFFSET INTERN_KONVERTDATE1 - OFFSET INTERN_FILESBASIS)
INTERN_KONVERTDATE2O EQU (OFFSET INTERN_KONVERTDATE2 - OFFSET INTERN_FILESBASIS)
INTERN_KONVERTTIME1O EQU (OFFSET INTERN_KONVERTTIME1 - OFFSET INTERN_FILESBASIS)
INTERN_KONVERTTIME2O EQU (OFFSET INTERN_KONVERTTIME2 - OFFSET INTERN_FILESBASIS)
#IF !INTERN_MAKEASCIIZ_S
INTERN_MAKEASCIIZ_S EQU 01
INTERN_MAKEASCIIZ:
CLD
XOR AH,AH
LODSB
MOV DX,SI
ADD SI,AX
XCHG AH,[SI]
RET
#ENDIF
INTERN_GETNEXTFILENAMECHAR:
LODSB
CMP AL,':'
JE RET
CMP AL,'\'
JE RET
CMP AL,'/'
RET
INTERN_EXPANDNAME:
PUSH CX
PUSH SI
LODSB
MOV CL,AL
XOR CH,CH
MOV DX,SI
L1:
CALL INTERN_GETNEXTFILENAMECHAR
JNE >L10
MOV DX,SI
L10:
LOOP L1
L2:
XOR CX,CX
POP SI
PUSH SI
INC SI
PUSH DI
INC DI
L0:
CMP SI,DX
JAE >L1
LODSB
STOSB
INC CX
JMP L0
L1:
MOV SI,OFFSET _DTANAME
ADD SI,BX
MOV DX,CX
MOV CX,13XD
L1:
LODSB
OR AL,AL
JE >L2
STOSB
INC DX
LOOP L1
L2:
POP DI
MOV ES:[DI],DL
POP SI
POP CX
RET
INTERN_OPENFILE1:
XOR AL,AL
INTERN_OPENFILE:
MOV BL,AL
CALL INTERN_MAKEASCIIZ
PUSH AX
MOV AH,03DH
MOV AL,BL
JMP >L1
INTERN_CREATEFILE:
CALL INTERN_MAKEASCIIZ
PUSH AX
MOV AH,03CH
L1:
INT 021H
POP BX
MOV [SI],BH
MOV BX,AX
RET
INTERN_CLOSEFILE:
PUSHF
PUSH AX
MOV AH,03EH
INT 021H
POP AX
POPF
RET
#IF !INTERN_RENAMEFILEDIR_S
INTERN_RENAMEFILEDIR_S EQU 01
INTERN_RENAMEFILEDIR:
PUSH DX,SI
CALL INTERN_MAKEASCIIZ
PUSH AX
PUSH SI
PUSH DX
PUSH DS
MOV DS,ES
MOV SI,DI
CALL INTERN_MAKEASCIIZ
MOV DI,DX
POP DS
POP DX
PUSH AX
PUSH SI
MOV AH,056H
INT 021H
POP DI
POP AX
MOV ES:[DI],AH
POP SI
POP AX
MOV [SI],AH
L9:
POP SI,DX
RET
#ENDIF
#IF !INTERN_CMARK0
INTERN_CMARK0 EQU 01H
INTERN_CMARK1:
PUSH BP
MOV BP,SP
MOV BX,06H
SUB CH,[BP+SI]
SUB AH,[BX+SI]
DEC SP
DEC CX
INC DX
XOR AL,041H
CMP B[02820H],DH
INC BX
SUB W[BX+SI],SP
INC DX
CS AND B[BP+DI+043H],DL
DEC AX
INC BP
DEC BP
DEC BP
INC BP
PUSH DX
AND B[BP+SI],CH
SUB CH,[BP+SI]
POP DX
MOV SP,BP
POP BP
RET
#ENDIF